}
else if (MUTEXP (obj))
{
- int len;
strout ("#<mutex ", -1, -1, printcharfun);
- len = sprintf (buf, "%p", XMUTEX (obj));
- strout (buf, len, len, printcharfun);
+ if (STRINGP (XMUTEX (obj)->name))
+ print_string (XMUTEX (obj)->name, printcharfun);
+ else
+ {
+ int len = sprintf (buf, "%p", XMUTEX (obj));
+ strout (buf, len, len, printcharfun);
+ }
PRINTCHAR ('>');
}
else
\f
-struct Lisp_Mutex
-{
- struct vectorlike_header header;
-
- lisp_mutex_t mutex;
-};
-
-DEFUN ("make-mutex", Fmake_mutex, Smake_mutex, 0, 0, 0,
+DEFUN ("make-mutex", Fmake_mutex, Smake_mutex, 0, 1, 0,
doc: /* FIXME */)
- (void)
+ (Lisp_Object name)
{
struct Lisp_Mutex *mutex;
Lisp_Object result;
memset ((char *) mutex + offsetof (struct Lisp_Mutex, mutex),
0, sizeof (struct Lisp_Mutex) - offsetof (struct Lisp_Mutex,
mutex));
+ mutex->name = name;
lisp_mutex_init (&mutex->mutex);
XSETMUTEX (result, mutex);
return Qnil;
}
+DEFUN ("mutex-name", Fmutex_name, Smutex_name, 1, 1, 0,
+ doc: /* FIXME */)
+ (Lisp_Object obj)
+{
+ struct Lisp_Mutex *mutex;
+
+ CHECK_MUTEX (obj);
+ mutex = XMUTEX (obj);
+
+ return mutex->name;
+}
+
void
finalize_one_mutex (struct Lisp_Mutex *mutex)
{
defsubr (&Smake_mutex);
defsubr (&Smutex_lock);
defsubr (&Smutex_unlock);
+ defsubr (&Smutex_name);
Qthreadp = intern_c_string ("threadp");
staticpro (&Qthreadp);